def find_kth_smallest(nums1, nums2, k):
    """
    问题：找到两个有序数组的第k小元素（时间O(log(min(m,n)))）
    思路：二分排除法，每次排除k/2个不可能的元素
    """
    # 确保nums1是较短数组，优化二分效率
    if len(nums1) > len(nums2):
        nums1, nums2 = nums2, nums1
    m, n = len(nums1), len(nums2)
    left, right = 0, m  # nums1中取0..m个元素

    while left <= right:
        # nums1取i个，nums2取k-i个
        i = (left + right) // 2
        j = k - i

        # 边界处理（i=0表示nums1全排除，i=m表示nums1全取）
        nums1_left = nums1[i - 1] if i > 0 else float('-inf')
        nums1_right = nums1[i] if i < m else float('inf')
        nums2_left = nums2[j - 1] if j > 0 else float('-inf')
        nums2_right = nums2[j] if j < n else float('inf')

        # 满足条件：nums1_left <= nums2_right 且 nums2_left <= nums1_right
        if nums1_left <= nums2_right and nums2_left <= nums1_right:
            return max(nums1_left, nums2_left)
        # nums1取多了，减少i
        elif nums1_left > nums2_right:
            right = i - 1
        # nums1取少了，增加i
        else:
            left = i + 1

    return -1  # 理论上不会触发


# 测试
# nums1 = [1, 3, 5], nums2 = [2, 4, 6]
# print(find_kth_smallest(nums1, nums2, 4))  # 输出：4（第4小元素）